﻿var gulp = require('gulp'),           //基础库
    loadPlugins = require('gulp-load-plugins'), 
    connect = require('gulp-connect'),
    minifyHtml = require('gulp-minify-html'),   //压缩html
    minifyCss = require('gulp-minify-css'),    //压缩css
    uglify = require('gulp-uglify'),   //js压缩  
    //jshint = require('gulp-jshint'),   //检查js
    imgemin = require('gulp-imagemin'),  //解压图片处理 
    //sass = require('gulp-ruby-sass'),
    sass = require('gulp-sass'),
    concat = require('gulp-concat'),    //合并
    rename = require('gulp-rename'),   //重命名文件
    jade = require('gulp-jade'),    //jade编译
    pngquant = require('imagemin-pngquant'), // 压缩图片
    livereload = require('gulp-livereload'),  //自动刷新
    webserver = require('gulp-webserver'), // 本地服务器
    plumber = require('gulp-plumber'),  //错误监听
    del = require('del');  //删除目录
    loadPlugins();
	
//jade处理
gulp.task('jade',function(){
    var src= 'src/*.jade';    //获取
    var dst='dist';
    gulp.src(src)
        .pipe(plumber())
		.pipe(jade()) //编译jade文件
        .pipe(gulp.dest(dst))
        .pipe(minifyHtml())   //压缩html
        .pipe(gulp.dest(dst))
        .pipe(livereload())
});   



//JS处理
gulp.task('js',function(){

    var src=['src/js/jquery-1.8.3.min.js','src/js/jquery.fullPage.min.js','src/js/app.js'];
    var dst='dist/js';
    gulp.src(src)
        .pipe(concat('app.min.js'))   //合并
        .pipe(gulp.dest(dst))     //生产模式目录
        .pipe(uglify())     //压缩
        .pipe(gulp.dest(dst))
        .pipe(livereload())
});

//sass处理
gulp.task('sass',function(){
    var src='src/style/*.{sass,scss}';
    var dst='dist/style';
    gulp.src(src)
        .pipe(sass())
        .pipe(concat('app.min.css'))   //合并
        .pipe(gulp.dest(dst))     //生产模式目录
        .pipe(minifyCss())  //css压缩
        .pipe(gulp.dest(dst))
        .pipe(livereload())

});

//css处理
gulp.task('css',function(){
	var src='src/css/*.css';
	var dst='dist/css';
    gulp.src(src)
        .pipe(concat('app.min.css'))   //合并
        .pipe(gulp.dest(dst))     //生产模式目录
        .pipe(minifyCss())  //css压缩
        .pipe(gulp.dest(dst))
        .pipe(livereload())

});

//image处理
gulp.task('image',function(){
	var src='src/images/*.{gif,jpeg,jpg,png,ico}';
	var dst='dist/images';
 	return  gulp.src(src)
         		.pipe(imgemin()) //压缩图片
         		.pipe(gulp.dest(dst))
                .pipe(livereload())
})

//监听页面是否被修改
gulp.task('watch', function() {
	livereload.listen();
    gulp.watch('src/images/*.{gif,jpeg,jpg,png,ico}', ['image']);
    gulp.watch('src/style/*.{sass,scss}', ['sass']);
    gulp.watch('src/*.jade', ['jade']);
    gulp.watch('src/js/*.js', ['js']);
});

//删除目录下的所有文件
gulp.task('clean',function(){
    del('dist/*');
});


//启动http服务
gulp.task('server',function(){
    return connect.server({
        root:'dist/',
        livereload: true,
        port:8082,
        open:true
    })
    /**gulp.src('dist') // 服务器目录（.代表根目录）
        .pipe(webserver({ // 运行gulp-webserver
            livereload: true, // 启用LiveReload
            port: 8080,
            fallback: 'index.html',
            open: true // 服务器启动时自动打开网页
        }));**/

});

// 默认任务 清空图片、样式、js并重建 运行语句 gulp
gulp.task('default', ['clean'], function(){
    gulp.start('js','jade','sass','image','server','watch');
});
//https://github.com/dbpoo/gulp